// 这是一个非常简化的 Node.js 后端示例，模拟 Flask 的路由风格
// 注意：实际项目中强烈推荐使用 Express 框架来简化路由和中间件处理

const http = require('http');

// 模拟一个简单的数据存储
let dataStore = {
  users: [
    { id: 1, name: 'Alice' },
    { id: 2, name: 'Bob' }
  ],
  nextId: 3
};

// 路由映射表 (模拟 Flask 的路由装饰器)
const routes = {
  'GET /': (req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello from Node.js! (类似 Flask 的 / 路由)');
  },
  'GET /users': (req, res) => {
    res.writeHead(200, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify(dataStore.users));
  },
  'GET /users/1': (req, res) => {
    res.writeHead(200, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify(dataStore.users[0])); // 简单硬编码返回第一个用户
  },
  'POST /users': (req, res) => {
    let body = '';
    req.on('data', chunk => {
      body += chunk.toString();
    });
    req.on('end', () => {
      try {
        const newUser = JSON.parse(body);
        newUser.id = dataStore.nextId++;
        dataStore.users.push(newUser);
        res.writeHead(201, { 'Content-Type': 'application/json' });
        res.end(JSON.stringify(newUser));
      } catch (e) {
        res.writeHead(400, { 'Content-Type': 'application/json' });
        res.end(JSON.stringify({ error: 'Invalid JSON' }));
      }
    });
  },
  'GET /hello/:name': (req, res, params) => { // 模拟路径参数
    // 注意：原生 http 模块不直接支持路径参数，这里简化处理
    const urlParts = req.url.split('/');
    if (urlParts[2]) {
      const name = urlParts[2];
      res.writeHead(200, { 'Content-Type': 'text/plain' });
      res.end(`Hello, ${name}! (类似 Flask 的 /hello/<name> 路由)`);
    } else {
      res.writeHead(404, { 'Content-Type': 'application/json' });
      res.end(JSON.stringify({ error: 'Name parameter not provided' }));
    }
  }
};

// 创建 HTTP 服务器
const server = http.createServer((req, res) => {
  console.log(`${req.method} ${req.url}`);

  // 简单的路由匹配逻辑
  const routeKey = `${req.method} ${req.url}`;
  const routeKeyWithoutId = `${req.method} ${req.url.split('/').slice(0, 3).join('/')}`; // 简单处理 /users/:id

  if (routes[routeKey]) {
    routes[routeKey](req, res);
  } else if (routes[routeKeyWithoutId]) {
    routes[routeKeyWithoutId](req, res);
  } else if (req.url.startsWith('/hello/')) {
    // 特殊处理 hello 路由
    routes['GET /hello/:name'](req, res);
  } else {
    res.writeHead(404, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify({ error: 'Not Found' }));
  }
});

const PORT = 3000;
server.listen(PORT, () => {
  console.log(`简单 Node.js 后端服务器运行在 http://localhost:${PORT}`);
  console.log('可访问的路由:');
  console.log('  GET  /');
  console.log('  GET  /users');
  console.log('  GET  /users/1 (硬编码)');
  console.log('  POST /users (需要 JSON body)');
  console.log('  GET  /hello/<your_name>');
});

// 注意：这个示例非常基础，实际项目中请使用 Express 框架
// npm install express
// const express = require('express');
// const app = express();
// app.get('/', (req, res) => res.send('Hello World!'));
// app.listen(3000);



